Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.01.2013, 16:45
Интересующийся
Отправить личное сообщение для alex55 Посмотреть профиль Найти все сообщения от alex55
 
Регистрация: 20.01.2013
Сообщений: 13

ajax ждет выполнения скрипта
Привет!
Есть пхп скрипт который работает например 20 секунд.
есть ajax - 1й запрос -вызов пхп скрипта, потом другая функция проверяет результат через другой скрипт (первый скрипт отписывается в базу о том сколько он выполнил , а второй пхп скрпт как раз берет из базы значение и выводит)

ПРоблема в том что первый запрос ждет выполнение пхп скрпта в 20 секунд , иногда выводит пустые сообщения а потом после 20 сек все ок..

function check_note()
{
str = document.getElementById('note').value;
if (str=="") { alert('EMPTY note'); return 0; } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

xmlhttp.onreadystatechange=check_fast()
hash = document.getElementById('hash').value;
xmlhttp.open("GET","job.php?note="+str+"&hash="+hash,true);
xmlhttp.send();
}

function isnum( nn ) {
    return res = ( nn / nn ) ? true : false;
}


function check_fast() {
alert('check fast');
hash = document.getElementById('hash').value;
check_result =  document.getElementById('result');

if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }

xmlhttp.onreadystatechange=function()

{
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {         if(!isnum(xmlhttp.responseText)) {   check_result.innerHTML=xmlhttp.responseText; alert(xmlhttp.responseText); alert('ne chislo');return 0; }
    check_result.innerHTML=xmlhttp.responseText;
     alert(xmlhttp.responseText);
    setTimeout(check_fast, 2000)

    }
  }

hash = document.getElementById('hash').value;
xmlhttp.open("GET","check.php?hash="+hash,true);
xmlhttp.send();



}
Ответить с цитированием
  #2 (permalink)  
Старый 21.01.2013, 08:50
Аватар для ОлегА
Профессор
Отправить личное сообщение для ОлегА Посмотреть профиль Найти все сообщения от ОлегА
 
Регистрация: 25.08.2011
Сообщений: 420

не совсем понятна суть проблемы, которую надо решить...
Ответить с цитированием
  #3 (permalink)  
Старый 21.01.2013, 13:32
Профессор
Отправить личное сообщение для Dmitriyff Посмотреть профиль Найти все сообщения от Dmitriyff
 
Регистрация: 22.07.2012
Сообщений: 164

вам бы взять какую-нить библиотечку для выполнения ajax, ну или свое обернуть в красивую обертку

возможно тут ошибка,
xmlhttp.onreadystatechange=check_fast()

ибо у вас еще не ушел check_note, а вы уже check_fast выполнили, и добавили еще один вызов его через 20 секунд

если вы сделаете так xmlhttp.onreadystatechange=check_fast
то он опять сработает несколько раз, ибо нужна будет проверка в check_fast на
xmlhttp.readyState==4 && xmlhttp.status==200
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получить результат выполнения скрипта на сервере в переменную ява gyper AJAX и COMET 5 19.11.2012 11:36
Статус выполнения запроса AJAX n1ko jQuery 6 08.03.2012 19:33
Как приостановить выполнение скрипта до получения результата AJAX запроса? Хиросим AJAX и COMET 9 31.10.2011 10:56
Google Chrome перерисовка страницы во время выполнения скрипта Dekart Javascript под браузер 0 08.06.2010 08:35
Нужно добавить блокировку ссылки на время выполнения скрипта aidka Events/DOM/Window 1 02.08.2009 20:11